/**
 * Created by ouxiaobao on 2017/8/15.
 */
/**
 * 定义接口常量
 */

function Utils() {
}
/**
 *AJAX请求帮助函数
 * @param url        请求地址
 * @param data       传输数据,支持a=1&b=2格式的字符串，或json对象
 * @param fn         成功后的回调处理
 */
Utils.get = function(url, data, fn) {
    if (!url) {
        throw new Error("请传入合法的url地址");
    }

    //对传进来的数据，进行处理，如果传进json，则拼接为正常的queryString

    if (data && typeof data == "object") {
        var tmp = "";
        try {
            for (var k in data) {
                tmp += k + "=" + data[k] + "&";
            }
            data = tmp.substring(0, tmp.length - 1);
        } catch (e) {
            throw new Error("请传入合法的请求参数");
        }
    }
    //所有不是字符串类型的变量，全部统一改为空字符串
    if (typeof data != "string") {
        data = "";
    }

    if(data){
        url += (url.indexOf("?")!=-1?"&":"?") + data;
    }


    //开始AJAX请求
    var obj = new XMLHttpRequest();  // XMLHttpRequest对象用于在后台与服务器交换数据
    obj.open('GET', url, true);
    obj.onreadystatechange = function () {

        try{
            if (obj.readyState == 4 && obj.status == 200 || obj.status == 304) { // readyState == 4说明请求已完成
                typeof fn == 'function' ? fn(obj.responseText) : "";  //从服务器获得数据
                console.warn("GET请求完成！");
            }
        }catch(e){
            throw e;
        }
    };
    obj.send();
}


Utils.post = function(url, data, fn) {
    if (!url) {
        throw new Error("请传入合法的url地址");
    }

    //对传进来的数据，进行处理，如果传进json，则拼接为正常的queryString

    if (data && typeof data == "object") {
        var tmp = "";
        try {
            for (var k in data) {
                tmp += k + "=" + data[k] + "&";
            }
            data = tmp.substring(0, tmp.length - 1);
        } catch (e) {
            throw new Error("请传入合法的请求参数");
        }
    }
    //所有不是字符串类型的变量，全部统一改为空字符串
    if (typeof data != "string") {
        data = "";
    }

    //开始AJAX请求
    var obj = new XMLHttpRequest();
    obj.open("POST", url, true);
    obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  // 添加http头，发送信息至服务器时内容编码类型
    obj.onreadystatechange = function () {
        try {
            if (obj.readyState == 4 && obj.status == 200 || obj.status == 304) { // readyState == 4说明请求已完成
                typeof fn == 'function' ? fn(obj.responseText) : "";  //从服务器获得数据
                console.warn("POST请求完成！");
            }
        } catch (e) {
            throw e;
        }
        ;
    }
    obj.send(data);
}
/**
 * 获取地址栏上的get方式的参数
 * @param name        参数键名
 */
Utils.GetQueryString = function(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null)return unescape(r[2]);
    return null;
}
/**
 *
 * @param title              分享标题
 * @param desc               分享描述
 * @param link               分享的链接
 * @param imgUrl             分享图片链接
 * @param successCallBack    分享成功后的回调
 * @param failCallBack       分享失败后的回调
 */
Utils.initWXShare = function(title, desc, link, imgUrl,successCallBack,failCallBack) {
    title = title ? title : API.SHARETITLE;
    desc = desc ? desc : API.SHAREDESC;
    link = link ? link : API.SHARELINK;
    imgUrl = imgUrl ? imgUrl : API.SHAREIMG;
    if (navigator.userAgent.match(/MicroMessenger/)) {
        Utils.initShareTimeline(title, link, imgUrl , successCallBack,failCallBack);
        Utils.initShareAppMessage(title, desc, link, imgUrl, successCallBack,failCallBack);
    } else {
        try {
            console.log("哥，你都不在微信环境下啊");
        } catch (e) {
            console.log(e);
        }
    }
}
Utils.initShareTimeline = function(title, link, imgUrl , successCallBack,failCallBack) {
    title = title ? title : API.SHARETITLE;
    link = link ? link : API.SHARELINK;
    imgUrl = imgUrl ? imgUrl : API.SHAREIMG;
    //分享到朋友圈
    wx.onMenuShareTimeline({
        title: title, // 分享标题
        link: link, // 分享链接
        imgUrl: imgUrl, // 分享图标
        trigger: function (res) {

        },
        success: function (res) {
            typeof successCallBack=="function"?successCallBack():"";
        },
        cancel: function (res) {
            typeof failCallBack=="function"?failCallBack():"";
        },
        fail: function (res) {
            typeof failCallBack=="function"?failCallBack():"";
        }
    });
    console.warn("初始化分享朋友圈完成！");
}
Utils.initShareAppMessage = function(title, desc, link, imgUrl , successCallBack,failCallBack){

    title = title ? title : API.SHARETITLE;
    desc = desc ? desc : API.SHAREDESC;
    link = link ? link : API.SHARELINK;
    imgUrl = imgUrl ? imgUrl : API.SHAREIMG;
    //分享给朋友
    wx.onMenuShareAppMessage({
        title: title, // 分享标题
        desc: desc, // 分享描述
        link: link, // 分享链接
        imgUrl: imgUrl, // 分享图标
        trigger: function (res) {

        },
        success: function (res) {
            typeof successCallBack=="function"?successCallBack():"";
        },
        cancel: function (res) {
            typeof failCallBack=="function"?failCallBack():"";
        },
        fail: function (res) {
            typeof failCallBack=="function"?failCallBack():"";
        }
    });
    console.warn("初始化分享朋友完成！");
}

/**
 * 给接口地址添加PHPSESSID参数
 * @param url
 */
Utils.initApiUrl = function(url){
    if(url.indexOf("?")!=-1){
        url+="&openid="+OPENID;
    }else{
        url+="?openid="+OPENID;
    }
    return url;
}

//定义存储OPENID的变量(要么地址栏拿，要么session里拿),都没有，则为null
var OPENID = Utils.GetQueryString("openid") || sessionStorage.getItem("openid");
OPENID?sessionStorage.setItem("openid",OPENID):"";

/**
 定义接口地址
 */
const API = {
    //登录接口
    LOGIN           : "https://api.bluej.cn/index/api/login?redirect_url="+encodeURIComponent(location.href)+"&base=0",

    //获取用户信息
    GET_USER        : "https://api.bluej.cn/index/api/getUser",

    //初始化JSSDK
    GET_JSSDK       : "https://api.bluej.cn/index/api/getJssdk",



};

/**
 分享信息的配置常量
 */
const CONFIG = {
    "SHARETITLE": "新雷凌185T车主调研",
    "SHAREDESC": "不调研你一定不知道的——销售政策对于买车决策而言，到底有多大影响？",
    "SHARELINK": "http://levin.bluej.cn/HTML/index.html",
    "SHAREIMG": "http://levin.bluej.cn/HTML/img/share.jpg"
}